var webpack = require( 'webpack' )
var path = require( 'path' )
var buildPath = path.resolve( __dirname, "js/webpackTest/build")
var nodeModulesPath = path.resolve( __dirname, "js/webpackTest/node_modules")

var config = {
    // 入口文件配置 可以多个入口
    entry: [
        'webpack/hot/dev-server',//注意点1：热替换配置点1,
        path.resolve( __dirname, 'js/webpackTest/entry.js')
    ],
    resolve: {
        // 配置文件的后缀名 可以是js、jsx、coffee、ts等
        extensions: [ "js" ],
        // alias配置项 可以为常用模块设置别名、节省编译时搜索需要的时间
        alias: {
            'react':path.join(nodeModulesPath,'react/react.js')
        }
    },
    // 出口文件配置
    output: {
        path: buildPath,
        filename: 'app.js'
    },
    plugins:[
        // 打包压缩
        new webpack.optimize.UglifyJsPlugin({
            compress:{
                warnings:false
            }
        }),
        // 允许错误不打断程序
        new webpack.NoErrorsPlugin(),
        // 将指定目录放入指定位置
        new TransferWebpackPlugins([
            {from:'www'}
        ], path.resolve( __dirname, 'src'))
    ],
    module:{
        preLoaders:[
            {
                test: /\.(js|jsx)$/,
                loader: 'eslint',
                include: [ path.resolve( __dirname, "src/app") ],
                exclude: [ nodeModulesPath ]
            }
        ],
        loaders:[
            {
                // 将es6语法转es5语法
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: [ nodeModulesPath ]
            },
            {
                // 将css/less/saas 文件的内容提取出来 将其放入html的style标签内
                test: /\.css$/,
                loader: 'style!css',// 如果是less配置：'style!css!less'
                exclude: nodeModulesPath
            },
            {
                // 图片或字体转base64
                test:/\.(png|woff|svg|ttf|eot)$/,
                loader:'url-loader?limit=10000',//小于10k的图片行base64的转换
            }
        ]
    },
    // eslint配置文件路径
    eslint: {
        configFile: './eslintrc'
    },
    // 热编译
    devServer:{
        contentBase: '',    // 静态文件路径  是相对路径  默认config文件所在的目录
        devtool: 'eval',
        hot: true,           //  自动刷新 
        inline: true,
        port: 3005
    },
    devtools: 'eval',
    plugins: [
        new webpack.HotModuleReplacementPlugin(), // 热更新插件
        new webpack.NoErrorsPlugin()
    ]
}

module.exports = config;